﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dados.ValueObjects;
using Dados.Interfaces;
using Dados.INFTURDataSetTableAdapters;

namespace Dados.ClassesSQLServer
{
    public class ClienteSQLServer : ICliente
    {
        T_CLIENTETableAdapter clienteTA = new T_CLIENTETableAdapter();


        #region ICliente Members

        public int Insere(ClienteVO cVO)
        {
             try
            {
                return clienteTA.Insert(cVO.Cpf, cVO.Endereco, cVO.Nome, cVO.Telefone, cVO.Email);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }

        public int Atualiza(ClienteVO cVO)
        {
            try
            {
                return clienteTA.Update(cVO.Endereco, cVO.Nome, cVO.Telefone, cVO.Email, cVO.Cpf);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }

        public int Remove(string cpf)
        {
            try
            {
                return clienteTA.Delete(cpf);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }

        public ClienteVO Consulta(string cpf)
        {
            try
            {
                ClienteVO cVO = null;
                INFTURDataSet.T_CLIENTEDataTable dtCliente = clienteTA.GetClientePorCPF(cpf);
                if (dtCliente.Count > 0)
                {
                    cVO = new ClienteVO();
                    cVO.Cpf = dtCliente[0].tx_cpf;
                    cVO.Nome = dtCliente[0].tx_nome;
                    cVO.Email = dtCliente[0].tx_email;
                    cVO.Endereco = dtCliente[0].tx_endereco;
                    cVO.Telefone = dtCliente[0].tx_Telefone;
                }
                return cVO;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }

        public List<ClienteVO> ConsultaTodos()
        {
            try
            {
                List<ClienteVO> lcVO = new List<ClienteVO>();
                INFTURDataSet.T_CLIENTEDataTable dt = clienteTA.GetData();

                foreach (INFTURDataSet.T_CLIENTERow cRow in dt)
                {
                    ClienteVO cVO = new ClienteVO();
                    cVO.Cpf = cRow.tx_cpf;
                    cVO.Email = cRow.tx_email;
                    cVO.Endereco = cRow.tx_endereco;
                    cVO.Nome = cRow.tx_nome;
                    cVO.Telefone = cRow.tx_Telefone;

                    lcVO.Add(cVO);
                }

                return lcVO;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }

        #endregion
    }
}
